//package com.runa.monitor.platinterface.config;
//
//import org.springframework.amqp.core.*;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.boot.autoconfigure.amqp.RabbitProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//import java.util.HashMap;
//import java.util.Map;
//
//@Configuration
//public class RabbitConfig {
//
//    /**
//     * RabbitMQ 队列声明时可选参数（防止手打出错）
//     */
//
//    //设置该队列的消息存活时长，超过指定时间消息即从该队列移除
//    //参数值类型为int，单位毫秒
//    private static final String MessageTTL = "x-message-ttl";
//
//    //设置队列本身的存活时间，如果在指定时间内没有被使用则自动删除
//    //参数值类型int，单位毫秒
//    private static final String AutoExpire = "x-expires";
//
//    //设置该队列最大的消息数量，参数值类型int （具体策略可参考overflow参数）
//    private static final String MaxLength = "x-max-length";
//
//    //设置该队列可存储最大字节数，参数值类型number，单位byte
//    private static final String MaxLengthBytes = "x-max-length-bytes";
//
//    //超限之后处理策略，可选参数三项
//    //drop-head（将队列前方消息丢弃或发送至死信队列）
//    //reject-publish（拒绝后续发来的消息或发送至死信队列）
//    private static final String OverflowBehaviour = "x-overflow";
//
//    //设置该队列绑定的死信交换机
//    private static final String DeadLetterExchange = "x-dead-letter-exchange";
//
//    //设置该队列绑定的死信交换机路由键
//    private static final String DeadLetterRoutingKey = "x-dead-letter-routing-key";
//
//    //设置该队列只能有一个消费者，参数类型bool
//    private static final String SingleActiveConsumer = "x-single-active-consumer";
//
//    //设置该队列的优先级，参数类型number(0~255)
//    //此优先级的使用方式是先将指定队列设置一个最大优先计数，然后给每个消息设置小于此数的优先级，以此可将队列中的消息分成max个等级
//    private static final String MaximumPriority = "x-max-priority";
//
//    public static final String ExchangeName = "comm-server-custom-exchange";
//
//    public static final String QueueName1 = "heat-net-queue-in";
//
//    public static final String QueueName2 = "rcc-net-queue-in";
//
//    public static final String QueueName3 = "heat-net-queue-out";
//
//    public static final String QueueName4 = "rcc-net-queue-out";
//
//    public static final String QueueName5 = "balance-net-queue-out";
//
//    public static final String QueueName6 = "heat-net-queue-mqtt";
//
////    public static final String QueueName7 = "heat-net-queue-mqtt-archive";
//
//    public static final String RoutingKey1 = "heat-net-command";
//
//    public static final String RoutingKey2 = "heat-net-data";
//
//    public static final String RoutingKey3 = "rcc-net-command";
//
//    public static final String RoutingKey4 = "rcc-net-data";
//
//    public static final String RoutingKey5 = "balance-net-data";
//
//    public static final String RoutingKey6 = "heat-net-mqtt";
//
////    public static final String RoutingKey7 = "heat-net-mqtt-archive";
//
//    @Bean
//    public Exchange commServerExchange() {
//        return new DirectExchange(ExchangeName);
//    }
//
//    @Bean
//    public Queue heatNetServerInQueue() {
//        Map<String, Object> arg = new HashMap<>();
//        arg.put(MessageTTL, 5000);
//        return new Queue(QueueName1, true, false, false, arg);
//    }
//
//    @Bean
//    public Queue rccNetServerInQueue() {
//        return new Queue(QueueName2);
//    }
//
//    @Bean
//    public Queue heatNetServerOutQueue() {
//        return new Queue(QueueName3);
//    }
//
//    @Bean
//    public Queue rccNetServerOutQueue() {
//        return new Queue(QueueName4);
//    }
//
//    @Bean
//    public Queue balanceNetServerOutQueue() {
//        return new Queue(QueueName5);
//    }
//
//    @Bean
//    public Queue heatNetServerMqttQueue() {
//        return new Queue(QueueName6);
//    }
//
//
////    @Bean
////    public Queue heatNetServerMqttArchiveQueue() {
////        return newComm Queue(QueueName7);
////    }
//
//    /**
//     * 热网 -> 通信的指令队列绑定
//     * @return
//     */
//    @Bean
//    public Binding binding1() {
//        return BindingBuilder.bind(heatNetServerInQueue()).to(commServerExchange()).with(RoutingKey1).noargs();
//    }
//
//    /**
//     * 通信 -> 热网的返回数据绑定
//     * @return
//     */
//    @Bean
//    public Binding binding2() {
//        return BindingBuilder.bind(heatNetServerOutQueue()).to(commServerExchange()).with(RoutingKey2).noargs();
//    }
//
//    @Bean
//    public Binding binding3() {
//        return BindingBuilder.bind(rccNetServerInQueue()).to(commServerExchange()).with(RoutingKey3).noargs();
//    }
//
//    @Bean
//    public Binding binding4() {
//        return BindingBuilder.bind(rccNetServerOutQueue()).to(commServerExchange()).with(RoutingKey4).noargs();
//    }
//
//    /**
//     * 通信 -> 平衡的返回数据绑定
//     * @return
//     */
//    @Bean
//    public Binding binding5() {
//        return BindingBuilder.bind(balanceNetServerOutQueue()).to(commServerExchange()).with(RoutingKey5).noargs();
//    }
//
//    @Bean
//    public Binding binding6() {
//        return BindingBuilder.bind(heatNetServerMqttQueue()).to(commServerExchange()).with(RoutingKey3).noargs();
//    }
//
//
//    /**
//     * 通信 -> 网关上线的返回数据绑定
//     * @return
//     */
////    @Bean
////    public Binding binding7() {
////        return BindingBuilder.bind(heatNetServerMqttArchiveQueue()).to(commServerExchange()).with(RoutingKey7).noargs();
////    }
//
//}
